const baseURL = 'https://cnodejs.org/api/v1'

const interceptor = {
  // 执行前触发的个钩子
  invoke(args) {
    uni.showLoading({ title: "加载中" });

    if (!args.url.startsWith("https")) {
      args.url = baseURL + args.url;
    }
    args.header = {
      ...args.header, // 保留原本的 header
      "source-client": "miniapp", // 添加小程序端调用标识
    };
  },

  complete() {
    uni.hideLoading();
  }
}

// 拦截请求
uni.addInterceptor('request', interceptor)

// 拦截响应
const http = async (options) => {
  const res = await uni.request(options);

  // 请求成功, 数据也对上
  if (res.statusCode >= 200 && res.statusCode < 300) {
    return res.data;
  }

  // 401 通常是token失效, 直接跳到登录页
  if (res.statusCode === 401) {
    uni.navigateTo({ url: "/pages/login/index" });
    return
  }
};

export default http